home *** CD-ROM | disk | FTP | other *** search
- /* Copyright 1992 H.Ogasawara (COR.) */
-
- #include <sys_doslib.h>
-
-
- /* てきとーに作った時間変換ルーチン */
-
- #include "tbase.h"
-
- #define FTIME 1970
-
- static char month_tbl[]= { 31,28,31,30,31,30,31,31,30,31,30,31 };
-
- /* こんな変換ルーチンで本当にいいのだろうか ?? (2000年で誤差が出ます) */
- sectotime( time, tb )
- T_BASE *tb;
- {
- unsigned short i;
- int year;
- tb->sec = time % 60;
- tb->min = (time/=60) % 60;
- tb->hour= (time/=60) % 24;
- year = (time/=24) /365;
- time %= 365;
- if( (time-= (year+1)/4) < 0 )
- year--, time+= 365;
- year+= FTIME;
- for( i= 0 ; tb->day= time+1, (time -= month_tbl[i]) >= 0 ; i++ )
- if( i == 1 && !(year & 3) && (--time < 0 ) )
- break;
- tb->year= year;
- tb->month= i+1;
- }
-
- timetosec( tb )
- T_BASE *tb;
- {
- unsigned short i;
- int time;
- time = tb->sec;
- time+= tb->min*60;
- time+= tb->hour*60*60;
- time+= (tb->day-1)*60*60*24;
- time+= (tb->year-FTIME)*365*60*60*24;
- time+= ((tb->year-FTIME+2)/4)*60*60*24;
-
- for( i= 0 ; i < tb->month-1 ; i++ )
- time+= month_tbl[i]*60*60*24;
- return time;
- }
-
- /* 夏時間は見ない */
- gettz()
- {
- char buf[256];
- if( GETENV( "TZ", 0, buf ) >= 0 )
- return atoi2( buf+3 );
- return -9;
- }
-
- #if 0
- main()
- {
- T_BASE t,tt;
- int a;
- t.sec= 0;
- t.min= 58;
- t.hour= 15;
- t.day= 30;
- t.month= 5;
- t.year= 1992;
- a= timetosec( &t );
- printf( "sec= %d (%d)\n", a, time(0) );
- sectotime( a, &tt );
- printf("%d/%02d/%02d %02d:%02d:%02d\n",tt.year,tt.month,tt.day,tt.hour,tt.min,tt.sec );
- sectotime( time(0)+9*60*60, &tt );
- printf("%d/%02d/%02d %02d:%02d:%02d\n",tt.year,tt.month,tt.day,tt.hour,tt.min,tt.sec );
- }
- #endif
-